package com.springCloud.hystrix;


/**
 * Hystrix执行流程
 */
public class HystrixDemo2 {

    /**
     * 一、把对资源的调用封装成HystrixCommand或者HystrixObservableCommand
     *
     * HystrixCommand返回一个结果调用
     * HystrixObservableCommand返回多个结果调用
     *
     *
     */
    public void demo1(){

    }

    /**
     * 二、调用command方法执行
     * 有4个方法可以执行
     * queue():属于异步调用，返回一个Future，可以通过Future获取单条结果
     * execute():属于同步调用，阻塞等待返回响应，或者抛出异常
     * toObserve():
     * toObservable():
     *
     * 其中queue()方法和execute方法仅仅对HystrixCommand有用
     *
     */
    public void demo2(){

    }

    /**
     * 三、查看是否开始缓存
     * 如果开启了缓存，则直接返回缓存结果
     */
    public void demo3(){

    }

    /**
     * 四、检查断路器是否被打开
     * 如果断路器被打开了，直接执行fallback方法
     */
    public void demo4(){

    }

    /**
     * 五、判断线程池，或者信号量是否满了
     * 如果已经满了，则执行fallback方法
     *
     */
    public void demo5(){

    }

    /**
     * 六、执行command方法
     * HystrixObservableCommand执行construct方法，返回多条响应结果
     * HystrixCommand执行run方法，返回一条响应结果
     */
    public void demo6(){

    }

    /**
     * 七、断路器统计数据
     * Hystrix会把调用成功，失败，异常，超时等信息统计给断路器，然后断路器决定是否打开。
     */
    public void demo7(){

    }

    /**
     * 八、fallback机制会被那些操作触发
     * 一、断路器打开
     * 二、线程池或者信号量满
     * 三、执行时候发生异常或者超时
     *
     */
}
